package `02-lambada`

/**
 * 具名函数作为参数
 *  :: 函数名
 */

fun main() {
    show0501(5,::lambda05)

    //变量 = 具名函数
    var lambda0501:(Int)->Unit = ::lambda05
    show0501(6,lambda0501)

    //Function1<Int,Unit> 等同于 (Int)->Unit
    //Kt函数作为参数，转换为Java，就是接口
    var lambda0502:Function1<Int,Unit> = lambda0501
    show0501(7,lambda0502)

    // Int.()->Unit 等价于 (Int)->Unit
    //Int.()->Unit 时 会把Int转换为匿名函数的第一个参数，也就是this
    var lambda0503:Int.()->Unit = lambda0501
    show0501(8,lambda0503)
}

fun show0501(value:Int,lambda:(Int)->Unit):Unit{
    lambda(value)
}

fun lambda05(num:Int):Unit{
    println("数值是$num")
}
